// include/characters/enemies/Enemy.hh
#ifndef CHARACTERS_ENEMIES_ENEMY_HH
#define CHARACTERS_ENEMIES_ENEMY_HH

#include "characters/Character.hh"
#include <string>

struct Item;
class Player;

/**
 * @class Enemy
 * @brief Abstract base class for all enemy types in the game.
 *
 * Defines the interface for attacking and taking damage, and serves as the
 * parent class for all specific enemy types like demons, statues, etc.
 */

class Enemy : public Character
{
public:
    // Constructor
    Enemy(std::string name, std::string description, unsigned health, unsigned maxHealth, unsigned attack, unsigned defense);

    // Destructor
    virtual ~Enemy() override = default;

    virtual bool attack(ICharacter &target) override = 0;

    virtual void displayInventory() const override;
};

#endif
